package com.zjl.redis.第12章_大key引出的问题;

/**
 * [强制] :拒绝bigkey(防止网卡流量、慢查询)
 *      string类型控制在10KB以内，hash、list、 set、 zset元素个数不要超过5000。
 *      反例:一个包含200万个元素的list。
 *      非字符串的bigkey,不要使用del删除,使用 hscan. sscan、 zscan方式渐进式删除，同时
 *      要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期，会触发del
 *      操作,造成阻塞，而且该操作不会出现在慢查询中(latency可查)),
 *
 *
 * 给出每种数据结构 Top 1 bigkey,同时给出每种数据类型的键值个数 + 平均大小
 * 想查询大于10kb的所有key, --bigkeys 参数就无能为力了，需要用到 memory usage 来计算每个键值的字节
 *
 * 计算出redis中所有key占用情况
 * redis-cli --bigkeys  -h ip -a 密码
 * redis-cli -h ip -p 6379 -a 密码 --bigkeys
 *
 * 每隔100条scan指令就会休眠 0.1s，ops就不会剧烈抬升，但是打描的时间会变长
 * redis-cli -h ip -p 端口 --bigkeys -i 0.1
 *
 * memory usage key 计算每个指定键值的字节
 *
 * 对于过大的 key,可以   感觉可以用   unlink key  #惰性删除指定key 背后别的线程慢慢删
 *      ● string 建议   unlink key //根据value选择非阻塞删除+仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作、
 *      ● hash  建议
 *          现根据 hscan 查询出 部分field，再循环使用
 *          hdel key field [field...]//删除指定 key的指定 field
 *      ● list  建议
 *          llen key //获取key的长度
 *          ltrim key start stop//保留 key 的下标为 [start ~ stop]  的值
 *      ● set  建议
 *          现根据 sscan 查询出 部分field，再循环使用
 *          srem key value1 value2//删除key的value//返回删除了几个
 *      ● zset  建议
 *          现根据 zscan 查询出 部分field，再循环使用
 *          zrem key value//删除key的value
 *
 *
 */
public class D_bigKey的控制 {
}
